package com.jc.nio.handlers;

import java.io.IOException;
import java.net.SocketOption;
import java.net.SocketOptions;
import java.nio.ByteBuffer;
import java.nio.channels.AsynchronousSocketChannel;
import java.nio.channels.CompletionHandler;
import java.nio.channels.SocketChannel;

import com.jc.nio.process.HttpOperation;

/**
 * 写入处理类<br/>
 * 这个handler是负责对通道进行写入，具体写入通道的东西有底层的Processor提供，在此之前processor已经对接受的东西进行了处理
 * 
 * @author Joeson
 * @since 2014/05
 * @version 01
 */
public class NioWriteHandler implements NioHandler
{

	private ByteBuffer send = null;

	public NioWriteHandler()
	{

	}

	public NioWriteHandler(ByteBuffer send)
	{
		this.send = send;
	}

	@Override
	public void handdler(SocketChannel channel)
	{

		try
		{
			send.flip();
			channel.write(send);
		} catch (IOException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		try
		{
			channel.close();
		} catch (IOException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		// String str =
		// "<html><head><title>test</title></head><body><p>this is a socketserver test</p></body></html>";
		// String CRLF = "\r\n";
		// // 响应头的参数
		// String serverLine = "Server:a simple java WebServer";
		// String statusLine = null;
		// String contentTypeLine = null;
		// String entityBody = null;
		// String contentLengthLine = "error";
		//
		// statusLine = "HTTP/1.1 200 OK" + CRLF;
		// contentTypeLine = "Content-type:text/html" + CRLF;
		// contentLengthLine = "Content-Length:" + 300 + CRLF;
		//
		// try
		// {
		// channel.write(ByteBuffer.wrap((statusLine + serverLine
		// + contentTypeLine + contentLengthLine + CRLF).getBytes()));
		//
		// channel.write(ByteBuffer.wrap(str.getBytes()));
		//
		// // send.put(str.getBytes());
		// //
		// // send.flip();
		// //
		// // // channel.set
		// // channel.write(send);
		//
		// channel.close();
		// } catch (IOException e1)
		// {
		// // TODO Auto-generated catch block
		// e1.printStackTrace();
		// }
		//
		// // try
		// // {
		// // channel.write(send);
		// // } catch (IOException e)
		// // {
		// // // TODO Auto-generated catch block
		// // e.printStackTrace();
		// // }
		//
		// try
		// {
		// channel.close();
		// } catch (IOException e)
		// {
		// // TODO Auto-generated catch block
		// e.printStackTrace();
		// }
	}
}